<?php
namespace App\Intelihelp\Controller;

use Foxframe\Filter;

use Foxforms\Widget\Field\Input;

use Foxforms\Widget\Form;

class relatorioController extends \Foxframe\Controller
{
	public function viewDashBoard($params = array())
	{

	}

	public function retornarTarefaJson($params = array())
	{
		$retorno	= array(0);
		$tarefas	= $this->em->getRepository('\Entities\Intelihelp\Tarefa')->tarefaPorStatus();

		foreach ($tarefas as $key => $value)
		{
			$retorno[$value['ds_status']]	= $value['qtd'];
		}
		echo json_encode($retorno);
		exit();
	}

	public function retornarPendenciaJson($params = array())
	{
		$retorno	= array();

		$criteria	= array(
				's.fl_situacao'	=> 1,
				't.responsavel'	=> unserialize($_SESSION[SESSION_LOGIN]['usuario'])->getIdPessoa()
		);
		$pendentesMinhas	= $this->em->getRepository('Entities\Intelihelp\Tarefa')->listar($criteria);
		$pendentesMinhas	= $pendentesMinhas->getArrayResult();
		$resultPendentesMinhas	= array();
		foreach ($pendentesMinhas as $value)
		{
			$resultPendentesMinhas[$value['id_tarefa']]	= $value;
		}

		$criteria	= array(
			's.fl_situacao'	=> 1,
			'p.id_pessoa'	=> unserialize($_SESSION[SESSION_LOGIN]['usuario'])->getIdPessoa()
		);
		$pendentesEquipe	= $this->em->getRepository('Entities\Intelihelp\Tarefa')->listar($criteria);
		$pendentesEquipe	= $pendentesEquipe->getArrayResult();
		$resultPendentesEquipe	= array();
		foreach ($pendentesEquipe as $value)
		{
			$resultPendentesEquipe[$value['id_tarefa']]	= $value;
		}

		$criteria	= array(
				's.fl_situacao'	=> 1,
				't.solicitante'	=> unserialize($_SESSION[SESSION_LOGIN]['usuario'])->getIdPessoa()
		);
		$pendentesSolicitadas	= $this->em->getRepository('Entities\Intelihelp\Tarefa')->listar($criteria);
		$pendentesSolicitadas	= $pendentesSolicitadas->getArrayResult();
		$resultPendentesSolicitadas	= array();
		foreach ($pendentesSolicitadas as $value)
		{
			$resultPendentesSolicitadas[$value['id_tarefa']]	= $value;
		}

		$retorno['Minhas']				= count($resultPendentesMinhas);
		$retorno['Minha(s) Equipe(s)']	= count($resultPendentesEquipe);
		$retorno['Solicitada(s)']		= count($resultPendentesSolicitadas);

		echo json_encode($retorno);
		exit();
	}

	public function retornarTarefaFinalizadaXPrazoJson()
	{
		$retorno	= array(0);
		$tarefasNoPrazo		= $this->em->getRepository('\Entities\Intelihelp\Tarefa')->tarefaPrazo(false, '>=');
		$tarefasForaDoPrazo	= $this->em->getRepository('\Entities\Intelihelp\Tarefa')->tarefaPrazo(false, '<');

		$retorno['No prazo']	= $tarefasNoPrazo;
		$retorno['Em atraso']	= $tarefasForaDoPrazo;
		echo json_encode($retorno);
		exit();
	}

	public function retornarTarefaAbertaXPrazoJson()
	{
		$retorno	= array(0);
		$tarefasNoPrazo		= $this->em->getRepository('\Entities\Intelihelp\Tarefa')->tarefaPrazo(true, '>');
		$tarefasForaDoPrazo	= $this->em->getRepository('\Entities\Intelihelp\Tarefa')->tarefaPrazo(true, '<');
		$tarefasVencendo	= $this->em->getRepository('\Entities\Intelihelp\Tarefa')->tarefaPrazo(true, '=');

		$retorno['No prazo']	= $tarefasNoPrazo;
		$retorno['Em atraso']	= $tarefasForaDoPrazo;
		$retorno['Vencendo']	= $tarefasVencendo;
		echo json_encode($retorno);
		exit();
	}

	public function viewTarefaXStatus($params = array())
	{
		$lista	= $this->em->getRepository('\Entities\Intelihelp\Tarefa')->tarefaPorStatus();
		$this->view->assign('lista', $lista);
	}

	public function viewTarefaXPeriodo($params = array())
	{
		$filter	= new Filter(isset($params['filter']) ? $params['filter'] : array());
		$form	= new Form();
		$form->addValues($filter, 'filter');
		$form->addElement(Input::create('application')->setType('hidden')->setValue('intelihelp'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('relatorio'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('viewTarefaXPeriodo'));
		$form->addElement(Input::create('filter[dtinicial]')->setType('text')->setLabel('Data inicial')->addClass('datepicker')->validate());
		$form->addElement(Input::create('filter[dtfinal]')->setType('text')->setLabel('Data inicial')->addClass('datepicker')->validate());
		$form->addElement(Input::create('pesquisar')->setType('submit')->setValue('Pesquisar')->addClass(array('btn','btn-primary')));

		$lista	= $this->em->getRepository('\Entities\Intelihelp\Tarefa')->tarefaPorPeriodo($filter->getQueryFilter());
		$retorno	= array();
		foreach ($lista	as $value)
		{
			if (isset($retorno[$value['dt_cadastro']->format('m/Y')]['cadastro']))
				$retorno[$value['dt_cadastro']->format('m/Y')]['cadastro']	= ++$retorno[$value['dt_cadastro']->format('m/Y')]['cadastro'];
			else
				$retorno[$value['dt_cadastro']->format('m/Y')]['cadastro']	= 1;

			if (!empty($value['dtfinalizacao']))
			{
			if (isset($retorno[$value['dtfinalizacao']->format('m/Y')]['finalizacao']))
				$retorno[$value['dtfinalizacao']->format('m/Y')]['finalizacao']	= ++$retorno[$value['dtfinalizacao']->format('m/Y')]['finalizacao'];
			else
				$retorno[$value['dtfinalizacao']->format('m/Y')]['finalizacao']	= 1;
			}
		}
		$this->view->assign('form', $form);
		$this->view->assign('lista', $retorno);
	}
}